using System;

namespace Microsoft.SqlServer.Tools.PublishWizard.CommandLine
{
	public class CommonCommandLineArguments
	{
		private bool _noSchemaQualify;

		private bool _schemaOnly;

        private bool _isFilePerObj;

		private bool _dataOnly;

		private string _targetServer;

		private bool _suppressOutput;

		private bool _noDropExisting;

		private string _connectionString;

		private string _localDatabaseName;

		private string _userName;

		private string _password;

		private string _serverName;
        
		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "noschemaqualify", HelpText = "NoSchemaQualifyHelpText")]
		public bool NoSchemaQualify
		{
			get
			{
				return this._noSchemaQualify;
			}
			set
			{
				this._noSchemaQualify = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "schemaonly", HelpText = "SchemaOnlyHelpText")]
		public bool SchemaOnly
		{
			get
			{
				return this._schemaOnly;
			}
			set
			{
				this._schemaOnly = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "fileperobj", 
            HelpText = "FilePerObjHelpText")]
        public bool IsFilePerObj
        {
            get { return _isFilePerObj; }
            set { _isFilePerObj = value; }
        }

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "dataonly", HelpText = "DataOnlyHelpText")]
		public bool DataOnly
		{
			get
			{
				return this._dataOnly;
			}
			set
			{
				this._dataOnly = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "targetserver", HelpText = "TargetServerHelpText", DefaultValue = "2005")]
		public string TargetServer
		{
			get
			{
				return this._targetServer;
			}
			set
			{
				this._targetServer = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "q", HelpText = "SupressesOutputHelpText")]
		public bool SuppressOutput
		{
			get
			{
				return this._suppressOutput;
			}
			set
			{
				this._suppressOutput = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "OutputOption", LongName = "nodropexisting", HelpText = "NoDropExitingHelpText", DefaultValue = false)]
		public bool NoDropExisting
		{
			get
			{
				return this._noDropExisting;
			}
			set
			{
				this._noDropExisting = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "LocalConnectionRelated", ArgumentHelpText = "ConnStrSyntax", LongName = "C", HelpText = "ConnectionStringHelpText")]
		public string ConnectionString
		{
			get
			{
				return this._connectionString;
			}
			set
			{
				this._connectionString = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "LocalConnectionRelated", ArgumentHelpText = "DatabaseNameSyntax", LongName = "d", HelpText = "DatabaseNameHelpText")]
		public string LocalDatabaseName
		{
			get
			{
				return this._localDatabaseName;
			}
			set
			{
				this._localDatabaseName = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "LocalConnectionRelated", ArgumentHelpText = "UserNameSyntax", LongName = "U", HelpText = "UserNameHelpText")]
		public string UserName
		{
			get
			{
				return this._userName;
			}
			set
			{
				this._userName = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "LocalConnectionRelated", ArgumentHelpText = "PasswordSyntax", LongName = "P", HelpText = "PasswordHelpText")]
		public string Password
		{
			get
			{
				return this._password;
			}
			set
			{
				this._password = value;
			}
		}

		[Argument(ArgumentTypes.AtMostOnce, HelpTopic = "LocalConnectionRelated", ArgumentHelpText = "ServerNameSyntax", LongName = "S", HelpText = "ServerNameHelpText")]
		public string ServerName
		{
			get
			{
				return this._serverName;
			}
			set
			{
				this._serverName = value;
			}
		}
	}
}
